import { action, observable } from 'mobx';
import { message } from 'antd';
import * as API from "../../apis/performance/baseSettingApi";
import { WeaLogView } from 'comsMobx'
const { LogStore } = WeaLogView;

/**
 * 绩效-考核设置
 * jiansong 2019/6/11
 */
export default class BaseSettingStore {

    @observable loading = true; //加载中
    @observable canedit = false; //是否能编辑页面
    @observable title = "绩效考核基础设置";
    @observable logStore = new LogStore();
    @observable showLog = false; //显示日志

    //设置参数
    @observable settingData = {
        resourceid: "", //资源id
        resourcetype: "1", //资源类型
        id: "",
        isfyear: '0', //年度
        ishyear: '0', //半年
        isquarter: '0', //季度
        ismonth: '0', //月度
        fstarttype: -1, //年度 开始时间类型（前、后）
        fstartdays: 0, //年度 开始时间天数（前、后）
        fendtype: 1, //年度 结束时间类型（前、后）
        fenddays: 0, //年度 结束时间类型（前、后）
        freminddays: 0,
        hstarttype: -1, //半年 开始时间类型（前、后）
        hstartdays: 0, //半年 开始时间天数（前、后）
        hendtype: 1, //半年 结束时间类型（前、后）
        henddays: 0, //半年 结束时间天数（前、后）
        qstarttype: -1, //季度 开始时间类型（前、后）
        qstartdays: 0, //季度 开始时间天数（前、后）
        qendtype: 1, //季度 结束时间类型（前、后）
        qenddays: 0, //季度 结束时间天数（前、后）
        mstarttype: -1, //月度 开始时间类型（前、后）
        mstartdays: 0, //月度 开始时间天数（前、后）
        mendtype: 1, //月度 结束时间类型（前、后）
        menddays: 0, //月度 结束时间天数（前、后）
        programcreate: "", //考核方案制定人
        programcreateData: [], //考核方案制定人
        programaudit: "", //考核方案审批人
        programauditData: [], //考核方案审批人
        manageraudit: 0,
        accessconfirm: "", //考核成绩确认人
        accessconfirmData: [], //考核成绩确认人
        accessview: "", //考核成绩查看人
        accessviewData: [], //考核成绩查看人
        isself: 0, //个人定义方案
        ismanager: 0, //上级定义方案
        docsecid: "", //附件上传目录
        docpath: "", //附件上传目录地址
        scoremin: -5, //评分范围
        scoremax: 5, //评分范围
        revisemin: -2, //修正分范围
        revisemax: 2, //修正分范围
        scoreSetting: 5, //分制
        subcompanyids: "", //应用到其他分部id
        departmentids: "", //应用到其他部门id
    };

    scoreOptions = [
        { key: "5", showname: "五分制", },
        { key: "10", showname: "十分制" },
        { key: "100", showname: "百分制" }
    ];
    timeType = [
        { key: "-1", showname: "前" },
        { key: "1", showname: "后" }
    ];

    @action("值改变")
    onValueChange = (params) => {
        for (let key in params) {
            this.settingData[key] = params[key];
        }
    }

    @action("日志显示改变")
    changeShowLog = () => {
        this.showLog = !this.showLog;
    }

    @action("考核设置获取最新设置")
    baseSettingApiData = () => {
        //总部类型，不请求数据
        if (this.settingData.resourcetype === "1") {
            this.loading = false;
            return;
        }
        this.loading = true;
        API.baseSettingApi({
            resourceid: this.settingData.resourceid,
            resourcetype: this.settingData.resourcetype
        }).then(action(res => {
            if (res.api_status) {
                this.canedit = res.canedit;
                if (res.data) {
                    //组织有配置数据
                    this.settingData = {
                        ...this.settingData,
                        ...res.data,
                        subcompanyids: "",
                        departmentids: ""
                    };
                } else {
                    //组织没有配置数据，清空表单
                    this.settingData = {
                        resourceid: this.settingData.resourceid,
                        resourcetype: this.settingData.resourcetype,
                        id: "",
                        isfyear: '0', //年度
                        ishyear: '0', //半年
                        isquarter: '0', //季度
                        ismonth: '0', //月度
                        fstarttype: -1, //年度 开始时间类型（前、后）
                        fstartdays: 0, //年度 开始时间天数（前、后）
                        fendtype: 1, //年度 结束时间类型（前、后）
                        fenddays: 0, //年度 结束时间类型（前、后）
                        freminddays: 0,
                        hstarttype: -1, //半年 开始时间类型（前、后）
                        hstartdays: 0, //半年 开始时间天数（前、后）
                        hendtype: 1, //半年 结束时间类型（前、后）
                        henddays: 0, //半年 结束时间天数（前、后）
                        qstarttype: -1, //季度 开始时间类型（前、后）
                        qstartdays: 0, //季度 开始时间天数（前、后）
                        qendtype: 1, //季度 结束时间类型（前、后）
                        qenddays: 0, //季度 结束时间天数（前、后）
                        mstarttype: -1, //月度 开始时间类型（前、后）
                        mstartdays: 0, //月度 开始时间天数（前、后）
                        mendtype: 1, //月度 结束时间类型（前、后）
                        menddays: 0, //月度 结束时间天数（前、后）
                        programcreate: "", //考核方案制定人
                        programcreateData: [], //考核方案制定人
                        programaudit: "", //考核方案审批人
                        programauditData: [], //考核方案审批人
                        manageraudit: 0,
                        accessconfirm: "", //考核成绩确认人
                        accessconfirmData: [], //考核成绩确认人
                        accessview: "", //考核成绩查看人
                        accessviewData: [], //考核成绩查看人
                        isself: 0, //个人定义方案
                        ismanager: 0, //上级定义方案
                        docsecid: null, //附件上传目录
                        docpath: null, //附件上传目录地址
                        scoremin: -5, //评分范围
                        scoremax: 5, //评分范围
                        revisemin: -2, //修正分范围
                        revisemax: 2, //修正分范围
                        scoreSetting: 5, //分制
                        subcompanyids: "", //应用到其他分部id
                        departmentids: "", //应用到其他部门id
                    }
                }
            } else {
                message.error(res.msg || '接口调用失败！')
            }
            this.loading = false;
        }));
    };

    @action("考核设置获取最新设置")
    baseSettingOperate = (params) => {
        if (this.settingData.resourcetype + '' === "1") {
            return;
        };
        this.loading = true;
        params = { ...params, ...this.settingData };
        API.baseSettingOperateApi(params).then(action(res => {
            if (res.api_status) {
                if (!res.hasRight) {
                    message.error("对不起，您暂时没有权限！");
                } else {
                    this.baseSettingApiData()
                    message.success("操作成功");
                }
            } else {
                message.error(res.msg || '接口调用失败！')
            }
            this.loading = false;
        }));
    };

}